/*	Interface for all lower level behaviors.  Behaviors must implement these methods.

*/

#ifndef BASEBEHAVIOR_H_
#define BASEBEHAVIOR_H_

#include "BlackBoard.h"
#include "BehaviorController.h"

class BehaviorController;

class BaseBehavior
{
public:
	BaseBehavior(); // BaseBehavior is given reference to gl
	~BaseBehavior();

	virtual void Enter(); // Call on start of behavior
	virtual void Execute(); // Call on action itself; this implements the main logic of the behavior
	virtual void Exit(); // Call at end of behavior

	virtual bool CheckConditions(); // Can we enter and execute this behavior?
	
	virtual BehaviorController* GetControl(); // Gets pointer to this task's Controller/ParentBehavior

private: // Nothing, this is a purely abstract base class and serves as an interface.

};

#endif
